
/**********************************************************************************\
** 文件名称: buf.c
** 创建人员: YCG
** 创建日期: 2018-11-03
** 文档描述:
** 版本代号: V0.1
** 版本说明: 初始版本
\********************************************************************************/
#include "buf.h"

/*******************************************************************************
** 函数名称: BufInit
** 功能描述: 初始化一个缓存
** 参数说明: bufst: [输入]  缓存结构体变量，存放相关的数据
**			     badd:  [输入]  缓存的地址
**			     len:   [输入]  缓存的长度
** 返回说明: SUCCESS：成功 FAILD：失败
** 创建人员: YCG
** 创建日期: 2018-11-03
********************************************************************************/
void BufInit(buf_struct* bufst, u8* badd, u8 len) {

    bufst->buf =      badd;
    bufst->cnt =      0;
    bufst->ReadPot =  0;
    bufst->writePot	= 0;
    bufst->lengh =    len;
}

/*******************************************************************************
** 函数名称: BufWrite
** 功能描述: 往缓存中写入一个数据
** 参数说明: bufst: [输入] 操作的缓存结构体变量
**			     dat:   [输入] 需要写入的数据
** 返回说明: SUCCESS：成功 FAILD：失败
** 创建人员: YCG
** 创建日期: 2018-11-03
********************************************************************************/
u8 BufWrite(buf_struct* bufst, u8 dat) {
    if(bufst->cnt < bufst->lengh) { //判断发送缓存中是否有空间
        bufst->cnt++;
        bufst->buf[bufst->writePot] = dat;
        bufst->writePot++;
        if(bufst->writePot >= bufst->lengh) bufst->writePot = 0;
        return SUCCESS;
    } else {
        return FAILD;
    }
}
/*******************************************************************************
** 函数名称: BufWrite
** 功能描述: 从缓存中读取一个数据
** 参数说明: bufst: [输入] 操作的缓存结构体变量
**			     dat:   [输入] 存放读取的数据
** 返回说明: SUCCESS：成功 FAILD：失败
** 创建人员: YCG
** 创建日期: 2018-11-03
********************************************************************************/
u8 BufRead(buf_struct* bufst, u8* dat) {
    if(bufst->cnt > 0) { //判断发送缓存中是否有数据
        bufst->cnt--;
        *dat = bufst->buf[bufst->ReadPot];
        bufst->ReadPot++;
        if(bufst->ReadPot >= bufst->lengh) bufst->ReadPot = 0;
        return SUCCESS;
    } else {
        return FAILD;
    }
}

/*******************************************************************************
** 函数名称: BufSpace
** 功能描述: 获取缓存的剩余空间
** 参数说明: bufst: [输入] 操作的缓存结构体变量
** 返回说明: 剩余缓存的数量
** 创建人员: YCG
** 创建日期: 2018-11-03
********************************************************************************/
u8 BufSpace(buf_struct* bufst) {
    return   (bufst->lengh - bufst->cnt);
}
/*******************************************************************************
** 函数名称: BufCnt
** 功能描述: 获取数据的数量
** 参数说明: bufst: [输入] 操作的缓存结构体变量
** 返回说明: 数据的数量
** 创建人员: YCG
** 创建日期: 2018-11-03
********************************************************************************/
u8 BufCnt(buf_struct *bufst) {
    return   (bufst->cnt);
}
/********************************End of File************************************/
